package monster.flight.admin.action.xtgl.mybatis;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import monster.comm.action.BaseJsonAction;
import monster.comm.log.ILog;
import monster.comm.log.LogService;
import monster.comm.util.CodeHelpVO;
import monster.comm.util.CreateMybatisHelp;
import monster.comm.util.ReturnConstant;
import monster.comm.util.TableVO;

/**
 * 创建信息=============
 * 类名: CodeHelpAction
 * 类作用描述: 代码生成类
 * 创建人： wanghong 
 * 创建时间： 2013-1-8 上午10:50:22
 * 修改信息1=============
 * 修改类型:     //1.修改bug 2.业务变化修改
 * 修改描述: 
 * 修改人：  
 * 修改时间：
 */

public class CodeHelpAction extends BaseJsonAction{
	private static ILog log = LogService.getLog(CodeHelpAction.class);
	private CodeHelpVO codeHelpVO;
	private List<TableVO> tableVO;
	private String daoXml;
	private String poXml;
	public String getPoXml(){
		return poXml;
	}
	public String getDaoXml(){
		return daoXml;
	}
	
	public CodeHelpVO getCodeHelpVO() {
		return codeHelpVO;
	}

	public void setCodeHelpVO(CodeHelpVO codeHelpVO) {
		this.codeHelpVO = codeHelpVO;
	}

	
	public List<TableVO> getTableVO() {
		return tableVO;
	}

	public void setTableVO(List<TableVO> tableVO) {
		this.tableVO = tableVO;
	}

	/**
	*@Description: 生成mybatis文件,
	*@return String    
	*@throws
	 */
	public String mybatis(){
		String isLogin = isLogin();//是否登录
		if(!"1".equals(isLogin)){
			returnVO.returnCode=ReturnConstant.IS_NOT_LOGIN;
    		returnVO.returnDesc="没有登录";
    		return "mybatis";
		}
		
		HashMap<String,TableVO> map=new HashMap<String,TableVO>();
        ArrayList<String> list=new ArrayList<String>();
        for(int i=0;i<tableVO.size();i++){
        	TableVO vo = tableVO.get(i);
        	if(vo.getTableName()==null||"".equals(vo.getTableName().trim())){
        		returnVO.returnCode=ReturnConstant.IS_PARAMS_ERR;
        		returnVO.returnDesc="表名不能为空";
        		return "mybatis";
        	}
        	if(vo.getKeyColumn()==null||"".equals(vo.getKeyColumn().trim())){
        		returnVO.returnCode=ReturnConstant.IS_PARAMS_ERR;
        		returnVO.returnDesc="主键不能为空";
        		return "mybatis";
        	}
        	map.put(vo.getTableName().toLowerCase(),vo);
        	list.add(vo.getTableName().toLowerCase());
        }     
        
		CreateMybatisHelp help = new CreateMybatisHelp(codeHelpVO, list, map);
		try{
		    help.createPO();//创建po类
	        help.createAllMybatisFile();//创建hibernate.hbm.xml文件
	        help.createDAOFile();//创建dao文件
	        daoXml=help.createSpringDaoXml();//创建dao在spring的注册
	        poXml=help.createSpringPOXml();//创建PO在spring的注册
	        returnVO.returnCode=ReturnConstant.IS_DEAL_OK;
    		returnVO.returnDesc="生成文件成功";
	        //String hbmcfg=help.createMybatisConfig();//得到表配置文件在mybatis公共文件中的引用
		}catch(Exception e){
			returnVO.returnCode=ReturnConstant.IS_ERR;
    		returnVO.returnDesc="程序异常";
			log.error(e.getMessage(),e);
		}
		
    	return "mybatis";
    }
}
